package thread;

import controller.UpdateController;
import javafx.application.Platform;
import model.VersionBean;
import utils.Constant;
import utils.FileUtils;
import utils.MonologUtils;
import utils.UpdateTool;

import java.io.File;
import java.io.IOException;

/**
 * Created by lincl on 2018/12/7.
 */
public class UpdateThread implements Runnable {

    public static void setInfo(final String text){
        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                UpdateController.controller.setLabelText(text);
            }
        });
    }

    public static void showConfirm(final String text){
        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                MonologUtils.alert(text);
                try {

                    Process p = Runtime.getRuntime().exec(Constant.Main_Exe_Name);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                Platform.exit();
            }
        });
    }

    @Override
    public void run() {
        setInfo("初始化...");


//        String root = getClass().getResource("").getPath();
//        if(root.startsWith("file:/")){
//            root = root.substring(6);
//        } else if(root.startsWith("/")){
//            root = root.substring(1);
//        }
//
//        int i;
//        if( (i = root.indexOf(Constant.Exe_Name + "updateExe.jar!"))!=-1){
//            //存在 生成环境 jar包
//            root = root.substring(0, i);
//        } else {
//            root = root.substring(0, root.lastIndexOf(Constant.Exe_Name));
//        }
//        root = new File(root).getParent();
//        //创建更新文件夹
//        File updateDir = new File(root, Constant.Update_Dir_Name);
//        if(!updateDir.exists()){
//            updateDir.mkdirs();
//        }
        //获取旧版本信息
//        File versionFile = new File(root, Constant.Version_File_Name);
//        VersionBean oldBean = FileUtils.readVersionBean(versionFile);
//        if(oldBean==null){
//            setInfo("解析版本文件错误，无法更新");
//            return;
//        }
        //获取新版本信息
//        File newVersionFile = new File(root, Constant.Update_Dir_Name+"/"+ Constant.Version_File_Name);
//        FileUtils.downLoadFile(newVersionFile);
//        VersionBean newBean = FileUtils.readVersionBean(newVersionFile);
//
//        if(oldBean.getCurVersion().equals(newBean.getCurVersion())){
//            setInfo("您的版本已经是最新的");
//            return;
//        }

        String root = UpdateTool.getProjectFolderPath();
        VersionBean newBean = UpdateTool.newVersion;
        VersionBean oldBean = UpdateTool.curVersion;
        //更新
        boolean flag = false;
        File zipFile;
        boolean upFlag = true;
        for(String s : newBean.getVersionList()){
            if(flag){
                setInfo("当前下载："+ s);
                zipFile = new File(root, Constant.Update_Dir_Name+"/"+ s +".zip");
                if(FileUtils.downLoadFile(zipFile) == 1){
                    setInfo("当前解压："+ s);
//                    unZip(zipFile, "C:\\Users\\大白菜\\Desktop\\svnPacking");
                    if(FileUtils.unZip(zipFile, root)==0){
                        upFlag = false;
                        setInfo("解压："+ s + " 失败");
                        break;
                    };
                } else {
                    upFlag = false;
                    setInfo("下载："+ s + " 失败");
                    break;
                }
            } else if(s.equals(oldBean.getCurVersion())){
                flag = true;
            }
        }

        //更新成功
        if(upFlag){
            UpdateTool.updateVersionFile();
            showConfirm("更新成功");
        }
    }

}
